#ifndef __LUA_PLAYER_H__
#define __LUA_PLAYER_H__


class LuaPlayer : public singleton<LuaPlayer>
{
public:
	LuaPlayer();
	~LuaPlayer();
	void Register();
	static Player* GetPlayer(lua_State * L);
	static Int32 luaGetTime(lua_State *L);
	static Int32 luaLOGGER_ERROR(lua_State *L);
	static Int32 luaLOGGER_INFO(lua_State *L);
	static Int32 luaGetOnlineCount(lua_State *L);
	static Int32 luaHasPet(lua_State *L);
	static Int32 luaAddPet(lua_State *L);

	static Int32 luaHasItem(lua_State *L);
	static Int32 luaAddItem(lua_State *L);
	static Int32 luaAddItemCount(lua_State *L);

	static Int32 luaHasSkill(lua_State *L);
	static Int32 luaAddSkill(lua_State *L);
	static Int32 luaGetRace(lua_State *L);
	static Int32 luaGetGender(lua_State *L);
	static Int32 luaGetLevel(lua_State *L);
	static Int32 luaGetCharName(lua_State *L);
	static Int32 luaGetCharId(lua_State *L);

	static Int32 luaAddStamina(lua_State *L);
	static Int32 luaAddEXP(lua_State *L);
	static Int32 luaAddIngot(lua_State *L);
	static Int32 luaAddMoney(lua_State *L);
	static Int32 luaAddHonour(lua_State *L);
	static Int32 luaAddWood(lua_State *L);
	static Int32 luaAddFood(lua_State *L);

	static Int32 luaSetNPCDialogAsk(lua_State *L);
	static Int32 luaSetNPCDialogAnswer(lua_State *L);
	static Int32 luaSetNPCDialogAcceptIndex(lua_State *L);
	static Int32 luaSetNPCDialogCompleteIndex(lua_State *L);

	static Int32 luaSendNPCDialog(lua_State *L);
	static Int32 luaSendTalk(lua_State *L);
	static Int32 luaSendSubtitle(lua_State *L);

	static Int32 luaSendTaskNPCDialog(lua_State *L);
	static Int32 luaSendTaskTalk(lua_State *L);
	static Int32 luaSendTaskSubtitle(lua_State *L);
	
	static Int32 luaCanAddTask(lua_State *L);
	static Int32 luaAddTask(lua_State *L);
	static Int32 luaHasTask(lua_State *L);
	static Int32 luaCancelTask(lua_State *L);
	static Int32 luaRemoveTask(lua_State *L);
	static Int32 luaSetTaskName(lua_State *L);
	static Int32 luaSetTaskDesc(lua_State *L);
	static Int32 luaSetTaskGoal(lua_State *L);
	static Int32 luaClearTaskGoals(lua_State *L);
	static Int32 luaSendTask(lua_State *L);
	static Int32 luaGetTaskData(lua_State *L);
	static Int32 luaSetTaskData(lua_State *L);
	static Int32 luaGetTaskStep(lua_State *L);
	static Int32 luaSetTaskStep(lua_State *L);
	static Int32 luaSetTaskStepSize(lua_State *L);
	static Int32 luaCompleteTask(lua_State *L);
	static Int32 luaIsTaskCompleted(lua_State *L);
	static Int32 luaSetTaskCompleteNPC(lua_State *L);
	static Int32 luaResetTask(lua_State *L);

	static Int32 luaSetTaskGoalCount(lua_State *L);
	static Int32 luaSetTaskGoalCountSize(lua_State *L);
	static Int32 luaGetTaskGoalCount(lua_State *L);
	static Int32 luaGetTaskGoalCountSize(lua_State *L);
	static Int32 luaIsTaskGoalCompleted(lua_State *L);

	static Int32 luaJumpMap(lua_State *L);
	static Int32 luaEnterBattlePVE(lua_State *L);
	static Int32 luaSetBattleEndInfo(lua_State *L);
	static Int32 luaSendSystemMessage(lua_State *L);
	static Int32 luaSendInfo(lua_State *L);
	static Int32 luaAddTrends(lua_State *L);

	static Int32 luaAddTitle(lua_State *L);
	static Int32 luaHasTitle(lua_State *L);
	static Int32 luaRemoveTitle(lua_State *L);

	static Int32 luaAddBuff(lua_State *L);
	static Int32 luaHasBuff(lua_State *L);
	static Int32 luaRemoveBuff(lua_State *L);

	static Int32 luaIsInFaction(lua_State *L);

	static Int32 luaStartMining(lua_State *L);

	static Int32 luaSetImageId(lua_State *L);

	static Int32 luaAddNPC(lua_State *L);
	static Int32 luaRemoveNPC(lua_State *L);
};
#endif
